package br.com.pucrs.tcc.ed;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import org.hibernate.type.TrueFalseType;

/**
 * The persistent class for the usuarios database table.
 * 
 */
@Entity
@Table(name = "usuarios")
@Inheritance(strategy = InheritanceType.JOINED)
public class Usuario implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "matricula")
	private String matricula;

	@Column(name = "email")
	private String email;

	@Column(name = "nome")
	private String nome;

	@Column(name = "senha")
	private String senha;

	@Column(name = "tipo")
	private Integer tipo;

	@Column(name = "documento")
	private String documento;

	// //bi-directional one-to-one association to Aluno
	// @OneToOne(mappedBy="usuario")
	// private Aluno aluno;
	//
	// //bi-directional one-to-one association to Professore
	// @OneToOne(mappedBy="usuario")
	// private Professore professore;
	//
	// //bi-directional many-to-one association to Telefone
	// @OneToMany(mappedBy="usuario")
	
	@OneToMany(cascade={CascadeType.REMOVE, CascadeType.PERSIST})
	@JoinColumn(name="USUARIOS_MATRICULA")
	@LazyCollection(LazyCollectionOption.FALSE)
	@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE})
	private List<Telefone> telefones;

	@Transient
	private String repeteSenha;
	
	public Usuario() {
	}

	public String getMatricula() {
		return this.matricula;
	}

	public void setMatricula(String matricula) {
		this.matricula = matricula;
	}

	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getSenha() {
		return this.senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public Integer getTipo() {
		return this.tipo;
	}

	public void setTipo(Integer tipo) {
		this.tipo = tipo;
	}

	public String getDocumento() {
		return documento;
	}

	public void setDocumento(String documento) {
		this.documento = documento;
	}

	// public Aluno getAluno() {
	// return this.aluno;
	// }
	//
	// public void setAluno(Aluno aluno) {
	// this.aluno = aluno;
	// }
	//
	// public Professore getProfessore() {
	// return this.professore;
	// }
	//
	// public void setProfessore(Professore professore) {
	// this.professore = professore;
	// }
	//
	public List<Telefone> getTelefones() {
		return this.telefones;
	}

	public void setTelefones(List<Telefone> telefones) {
		this.telefones = telefones;
	}
	//
	// public Telefone addTelefone(Telefone telefone) {
	// getTelefones().add(telefone);
	// telefone.setUsuario(this);
	//
	// return telefone;
	// }
	//
	// public Telefone removeTelefone(Telefone telefone) {
	// getTelefones().remove(telefone);
	// telefone.setUsuario(null);
	//
	// return telefone;
	// }

	public String getRepeteSenha() {
		return repeteSenha;
	}

	public void setRepeteSenha(String repeteSenha) {
		this.repeteSenha = repeteSenha;
	}

	
	
}